1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import com.google.common.annotations.GwtCompatible;
20 import com.google.common.annotations.GwtIncompatible;
21
22 import java.io.Serializable;
23 import java.util.Map.Entry;
24
25 import javax.annotation.Nullable;
26
27
28
29
30
31
32
33 @GwtCompatible(emulated = true)
34 final class ImmutableMapValues<K, V> extends ImmutableCollection<V> {
35 private final ImmutableMap<K, V> map;
36
37 ImmutableMapValues(ImmutableMap<K, V> map) {
38 this.map = map;
39 }
40
41 @Override
42 public int size() {
43 return map.size();
44 }
45
46 @Override
47 public UnmodifiableIterator<V> iterator() {
48 return Maps.valueIterator(map.entrySet().iterator());
49 }
50
51 @Override
52 public boolean contains(@Nullable Object object) {
53 return object != null && Iterators.contains(iterator(), object);
54 }
55
56 @Override
57 boolean isPartialView() {
58 return true;
59 }
60
61 @Override
62 ImmutableList<V> createAsList() {
63 final ImmutableList<Entry<K, V>> entryList = map.entrySet().asList();
64 return new ImmutableAsList<V>() {
65 @Override
66 public V get(int index) {
67 return entryList.get(index).getValue();
68 }
69
70 @Override
71 ImmutableCollection<V> delegateCollection() {
72 return ImmutableMapValues.this;
73 }
74 };
75 }
76
77 @GwtIncompatible("serialization")
78 @Override Object writeReplace() {
79 return new SerializedForm<V>(map);
80 }
81
82 @GwtIncompatible("serialization")
83 private static class SerializedForm<V> implements Serializable {
84 final ImmutableMap<?, V> map;
85 SerializedForm(ImmutableMap<?, V> map) {
86 this.map = map;
87 }
88 Object readResolve() {
89 return map.values();
90 }
91 private static final long serialVersionUID = 0;
92 }
93 }